#dp=print
def dp(*t):
    return 0

#单字节HEX转BCD
def Hex2bcd(a):
    return ((a&0xf0)>>4)*10+(a&0x0f)

def bcc(t):
    if(len(t)==0): return 0
    bcc=0
    for i in t:
        bcc^=int(i)
    return bcc

######################################################################################################################
#
#  str1='11 2 3 4 6 0x67 88 6,9 192 345 ' => 11 02 03 04 06 67 88 06 09 19 02 34 05
#  print(str2hexs(str1)+b'12345\x01\x02\03\04\05'+str2bytes(b'2222','3333'))
#  or
#  a=b'\x11\x02\x03\x04\x06g\x88\x06\t\x19\x024\x0512345\x01\x02\x03\x04\x052222\x03\x04\x053333'
#  print(showhex(a))
#  11 02 03 04 06 67 88 06 09 19 02 34 05 31 32 33 34 35 01 02 03 04 05 32 32 32 32 03 04 05 33 33 33 33
#
#######################################################################################################################
#just for print
#a=b'\x11\x02\x03\x04\x06g\x88\x06\t\x19\x024\x0512345\x01\x02\x03\x04\x052222\x03\x04\x053333'
#print(showhexs(a))
# 11 02 03 04 06 67 88 06 09 19 02 34 05 31 32 33 34 35 01 02 03 04 05 32 32 32 32 03 04 05 33 33 33 33
def showhexs(s):
    t=''
    for i in s:
        t+=str(hex(int(str(i)))[2:]).zfill(2)+' '
    return t
#######################################################################################################################
#将一串字符串转换为hex for example
#  11 2 3 4 6 0x67 88 6,9 192 345
#=> 11 02 03 04 06 67 88 06 09 19 02 34 05
def str2hexs(s):
    def ishex(s):
        try:
            if (s >= 'a' and s <= 'f') or (s >= 'A' and s <= 'F') or (s >= '0' and s <= '9'):
                return True
            else:
                return False
        except:
            dp('type is err ')
            return False
    rec_s=[]
    i=0
    l=len(s)
    s=s+'     '#防止越界,人为地加几个space
    while i<l:
        if(ishex(s[i])):
            if (s[i]=='0'and (s[i+1]=='x' or s[i+1]=='X')):
                i+=2
            elif (ishex(s[i+1])):
                rec_s.append(s[i])
                rec_s.append(s[i+1])
                rec_s.append(' ')
                i+=2
                dp(rec_s)
            else:
                rec_s.append('0')
                rec_s.append(s[i])
                rec_s.append(' ')
                i+=1
                dp(rec_s)
        else:
            i+=1
    rec_str= ''.join(rec_s) #list to str
    return bytes.fromhex(rec_str)#str to byte
######################################################################################################################
# 返回bytes,类似字符串前面+ b''
def str2bytes(*s):
    ret = b''
    for i in s:
        if (isinstance(i, str)):
            var=i
            var = var.encode(encoding="utf-8")
            ret += var
        elif (isinstance(i, bytes)):
            var=i
            #var = str(var,encoding="utf-8")
            ret += var
    return ret

#######################################################################################################################


if __name__ == '__main__':
    print('=>>Test is follow')
    str1 = '11 2 3 4 6 0x67 88 6,9 192 345 '
    print("=>>Set str1 = '11 2 3 4 6 0x67 88 6,9 192 345 '")
    print("=>>We can use as  print(str2hexs(str1)+b'12345\x01\x02\03\04\05'+str2bytes(b'2222','3333'))")
    print("=>>Then is to ")
    print('         ',str2hexs(str1) + b'12345\x01\x02\03\04\05' + str2bytes(b'2222', '3333'))
    print("=>>Or we can show as  print(showhexs(str))\n=>>And the follow is ")
    print('        ',showhexs(str2hexs(str1) + b'12345\x01\x02\03\04\05' + str2bytes(b'2222', '3333')))
